import { IPSDataEntity } from '../dataentity/ipsdata-entity';
import { IPSDEAction } from '../dataentity/action/ipsdeaction';
import { IPSDEDataSet } from '../dataentity/ds/ipsdedata-set';
import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSSysBackService
 */
export interface IPSSysBackService extends IPSModelObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 容器标记
   * @type {string}
   */
  containerTag: string;

  /**
   * 调用实体行为
   *
   * @type {IPSDEAction}
   */
  getPSDEAction(): IPSDEAction | null;

  /**
   * 调用实体行为
   *
   * @type {IPSDEAction}
   */
  get psDEAction(): IPSDEAction | null;

  /**
   * 调用实体行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getPSDEActionMust(): IPSDEAction;

  /**
   * 目标数据集
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 目标数据集
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet(): IPSDEDataSet | null;

  /**
   * 目标数据集（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  get psDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntityMust(): IPSDataEntity;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 预定义类型
   * @description 值模式 [系统后台任务作业预置类型] {DENOTIFY：实体通知、 SYSDATASYNCAGENT：系统数据同步代理（输入）、 WFCALLBACK：工作流回调、 SYSADMIN：系统管理、 SYSDTSQUEUE：系统异步处理队列（取消）、 USER：自定义 }
   * @type {( string | 'DENOTIFY' | 'SYSDATASYNCAGENT' | 'WFCALLBACK' | 'SYSADMIN' | 'SYSDTSQUEUE' | 'USER')}
   */
  predefinedType: string | 'DENOTIFY' | 'SYSDATASYNCAGENT' | 'WFCALLBACK' | 'SYSADMIN' | 'SYSDTSQUEUE' | 'USER';

  /**
   * 服务容器
   * @description 值模式 [云系统后台任务运行容器] {SC01：服务容器01、 SC02：服务容器02、 SC03：服务容器03、 SC04：服务容器04、 USER：自定义容器 }
   * @type {( string | 'SC01' | 'SC02' | 'SC03' | 'SC04' | 'USER')}
   */
  serviceContainer: string | 'SC01' | 'SC02' | 'SC03' | 'SC04' | 'USER';

  /**
   * 服务处理对象
   * @type {string}
   */
  serviceHandler: string;

  /**
   * 服务次序
   * @type {number}
   */
  serviceOrder: number;

  /**
   * 服务参数
   * @type {string}
   */
  serviceParams: string;

  /**
   * 服务策略
   * @type {string}
   */
  servicePolicy: string;

  /**
   * 服务策略2
   * @type {string}
   */
  servicePolicy2: string;

  /**
   * 服务标记
   * @type {string}
   */
  serviceTag: string;

  /**
   * 服务标记2
   * @type {string}
   */
  serviceTag2: string;

  /**
   * 启动模式
   * @description 值模式 [云系统后台任务启动模式] {AUTO：自动、 MANUAL：手动 }
   * @type {( string | 'AUTO' | 'MANUAL')}
   */
  startMode: string | 'AUTO' | 'MANUAL';

  /**
   * 任务类型
   * @description 值模式 [云系统后台任务作业类型] {PREDEFINED：预定义、 DEACTION：触发实体行为、 USER：自定义 }
   * @type {( string | 'PREDEFINED' | 'DEACTION' | 'USER')}
   */
  taskType: string | 'PREDEFINED' | 'DEACTION' | 'USER';

  /**
   * 定时触发策略
   * @type {string}
   */
  timerPolicy: string;

  /**
   * 定时触发模式
   * @type {boolean}
   * @default false
   */
  timerMode: boolean;
}
